// #include <REGX52.H>
// #include <intrins.h>

// /**
//  * @brief 延时函数，用于按键去抖
//  * 
//  * 该函数通过空循环的方式产生一定的延迟，用于在按键检测时去除按键的抖动。延迟时间与传入的参数n成比例。
//  * 在一个按键按下时，使用此函数防止由于按键抖动导致的错误读取。
//  * 
//  * @param n  延迟次数，控制延迟的长短
//  * 
//  * @return 无
//  */
// void Key_Delay(unsigned char n) //@11.0592MHz
// {
// 	while (n) 
// 	{
// 		unsigned char i, j;

// 		_nop_();  // 无操作指令，用于微调时序
// 		_nop_();  // 无操作指令，用于微调时序
// 		_nop_();  // 无操作指令，用于微调时序
// 		i = 11;   // 外部延时循环的初始值
// 		j = 190;  // 内部延时循环的初始值
// 		do
// 		{
// 			while (--j)  // 内部循环计时
// 				;
// 		} while (--i);  // 外部循环计时
// 		n--;  // 每次调用减少n值，直到为0
// 	}
// }

// /**
//  * @brief 按键扫描函数
//  * 
//  * 该函数通过检测P3口的4个引脚（P3.0到P3.3）来判断按键是否被按下。如果某个引脚对应的按键被按下，
//  * 则延时去抖后返回相应的按键编号。此函数用于检测外部连接到P3口的四个按键。
//  * 
//  * @param 无
//  * 
//  * @return Key_Count  按键编号，返回值为1到4之间的数字，表示按下的按键
//  *         如果没有按键按下，返回值为0
//  */
// unsigned char key()
// {
// 	// 根据实际情况增删static关键字
// 	unsigned char Key_Count = 0;  // 初始化按键计数值

// 	if (P3_1 == 0) {  // 检测P3.1引脚是否为低电平，表示按键1被按下
// 		Key_Delay(20);  // 去抖
// 		while (P3_1 == 0);  // 等待按键释放
// 		Key_Delay(20);  // 去抖
// 		Key_Count = 1;  // 按键1被按下
// 	}
// 	if (P3_0 == 0) {  // 检测P3.0引脚是否为低电平，表示按键2被按下
// 		Key_Delay(20);  // 去抖
// 		while (P3_0 == 0);  // 等待按键释放
// 		Key_Delay(20);  // 去抖
// 		Key_Count = 2;  // 按键2被按下
// 	}
// 	if (P3_2 == 0) {  // 检测P3.2引脚是否为低电平，表示按键3被按下
// 		Key_Delay(20);  // 去抖
// 		while (P3_2 == 0);  // 等待按键释放
// 		Key_Delay(20);  // 去抖
// 		Key_Count = 3;  // 按键3被按下
// 	}
// 	if (P3_3 == 0) {  // 检测P3.3引脚是否为低电平，表示按键4被按下
// 		Key_Delay(20);  // 去抖
// 		while (P3_3 == 0);  // 等待按键释放
// 		Key_Delay(20);  // 去抖
// 		Key_Count = 4;  // 按键4被按下
// 	}

// 	return Key_Count;  // 返回按键编号（1-4），没有按键按下时返回0
// }
